/* Zatok - язык программирования текстовых игр
 * (С) 2010 - 2012 Меркулов Матвей Юрьевич
 * Код лицензирован под лицензией GNU LGPL
 * Вы можете прочитать текст лицензии по адресу:
 * http://www.gnu.org/copyleft/lesser.html
 * или прочитать русский перевод по адресу:
 * http://ru.wikisource.org/wiki/GNU_Lesser_General_Public_License
 */

package base.context;

import base.function.CBooleanFunction;
import base.value.CValue;
import base.value.CValue.CType;
import parser.CParser;

public class CContainsParameter extends CBooleanFunction {
	@Override
	public void Init() {
		int[] Array = { 2, 3 };
		AssertParam( Array );
	}
	
	
	
	@Override
	public boolean ToBoolean() {
		CParameter Parameter = Param[ 1 ].ToParameter();
		if( Parameter == null ) {
			CValue Value = Param[ 1 ].GetValue();
			if( Value.GetType() == CType.String ) {
				String ParameterName = Value.ToString().toLowerCase();
				Parameter = CParser.Parameters.get( ParameterName );
				if( Parameter == null ) Error( "Параметр ''" + ParameterName + "'' не найден" );
			} else {
				Error( "Ожидается параметер" );
			}
		}
		
		if( Param[ 0 ].ToObject().Parameters.containsKey( Parameter ) ) {
			if( Param.length == 2 ) return true;
			return Param[ 0 ].ToObject().Parameters.get( Parameter ).GetValue().IdenticalTo( Param[ 2 ].GetValue() );
		}
		return false;
	}
}
